package com.ideaaedi.zoo.diy.artifact.mybatisplus.handler;

import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
import org.apache.ibatis.mapping.BoundSql;
import org.apache.ibatis.session.Configuration;
import org.springframework.core.Ordered;

import javax.annotation.Nonnull;

/**
 * 完整sql处理器
 *
 * @author <font size = "20" color = "#3CAA3C"><a href="https://gitee.com/JustryDeng">JustryDeng</a></font> <img
 * src="https://gitee.com/JustryDeng/shared-files/raw/master/JustryDeng/avatar.jpg" />
 * @since 1.0.0
 */
public interface FullSqlPreparePreHandler extends Ordered {
    
    /**
     * 是否支持处理完整SQL
     *
     * @param mpStatementHandler sql语法处理器
     *
     * @return 是否支持解析
     */
    boolean support(@Nonnull PluginUtils.MPStatementHandler mpStatementHandler);
    
    /**
     * 处理完整SQL
     *
     * @param fullSql 由程序组装的完整sql
     * @param boundSql mybatis sql信息
     * @param configuration mybatis 配置信息
     */
    void handle(@Nonnull String fullSql, @Nonnull BoundSql boundSql, @Nonnull Configuration configuration);
}
